//
//  main.m
//  匿名对象
//
//  Created by wenjim on 17/9/12.
//  Copyright © 2017年 WenJim. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "Pig.h"
#import "iPhone.h"

int main(int argc, const char * argv[]) {
    
    //匿名就是没有名字，匿名对象就是没有名字的对象
    
    // 1.有名字的对象
    // 只要用一个指针保存了某个对象的地址，我们就可以称这个指针为某个对象
    // 称pig为Pig对象
    Pig * pig = [Pig new];
    pig -> _name = @"Peter";
    pig -> _weight = 75.5;
    [pig call];
    
    // 2.没有名字的对象
    // 无论有没有名字，只要调用new方法都会返回对象的地址
    // 每次new都会新开辟一块存储空间
    [Pig new] -> _name = @"Pig";
    [Pig new] -> _weight = 76.5;
    [[Pig new] call];
    
    // 3.匿名对象的应用场景
    // 3.1当对象只需要使用一次的时候就可以使用匿名对象
    iPhone * iphone = [iPhone new];
    [iphone brands]; //
    
    
    [[iPhone new] brands];
    
    // 3.2 匿名对象可以作为方法的参数
    Pig * p1 = [Pig new];
//    iPhone * iphone1 = [iPhone new];
//    [p1 fight:iphone1];
    
    [p1 fight:[iPhone new]];
    
    return 0;
}
